/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sysprojectmg.proyecto.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import sysprojectmg.conexion.ConectaDB;
import sysprojectmg.horasproduccion.be.BeanMiembro;

/**
 *
 * @author Metis Gaia 2010-02
 */
public class MiembrosProyectoDAO {

    public ArrayList<BeanMiembro> obtenerMiembros(int estado) throws SQLException {
        ArrayList<BeanMiembro> lista = new ArrayList<BeanMiembro>();
        BeanMiembro bean = null;
        CallableStatement call = null;
        Connection conn = null;
        try {
            conn = new ConectaDB().getAcceso();
            String store = "SELECT USUARIO.idUsuario, USUARIO.nombre_apellido "
                    + "FROM USUARIO "
                    + "WHERE USUARIO.estado=? "
                    + "ORDER BY 2";
            call = conn.prepareCall(store);
            call.setInt(1, estado);

            ResultSet rs = call.executeQuery();
            while (rs.next()) {
                bean = new BeanMiembro(
                        rs.getInt("idUsuario"),
                        rs.getString("nombre_apellido"),
                        0);
                lista.add(bean);
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            if (call != null) {
                call.close();
            }
            if (conn != null) {
                conn.close();
            }
        }

        return lista;
    }

    public boolean modificar(int idProy, ArrayList<BeanMiembro> listaEliminados, ArrayList<BeanMiembro> listaNuevos) throws SQLException {
        boolean res = false;
        int rs;
        int contador;

        if (!listaEliminados.isEmpty()) {
            rs = 0;
            contador = 0;
            for (BeanMiembro b : listaEliminados) {
                CallableStatement call = null;
                Connection conn = null;
                try {
                    conn = new ConectaDB().getAcceso();
                    String store = "UPDATE usuarioxrolxproyecto "
                            + "SET estado = 0 "
                            + "WHERE usuarioxrolxproyecto.idproyecto = ? "
                            + "AND usuarioxrolxproyecto.idusuario = ? ";
                    call = conn.prepareCall(store);
                    call.setInt(1, idProy);
                    call.setInt(2, b.getIdMiembro());

                    rs = call.executeUpdate();
                    if (rs != 0) {
                        contador++;
                    }

                } catch (Exception e) {
                    System.out.println(e);
                } finally {
                    if (call != null) {
                        call.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                }
            }

            if (contador == listaEliminados.size()) {
                res = true;
            }
        }

        if (!listaNuevos.isEmpty()) {
            rs = 0;
            contador = 0;
            for (BeanMiembro b : listaNuevos) {
                CallableStatement call = null;
                Connection conn = null;
                try {
                    conn = new ConectaDB().getAcceso();
                    String store = "INSERT INTO usuarioxrolxproyecto "
                            + "(`idusuario`, `idrol`, `idproyecto`, `horas`, `idsemana`, `estado`) "
                            + "VALUES "
                            + "(?, 2, ?, 0, ?, 1) ";
                    call = conn.prepareCall(store);
                    call.setInt(1, b.getIdMiembro());
                    call.setInt(2, idProy);
                    call.setInt(3, b.getSemana());

                    rs = call.executeUpdate();
                    if (rs != 0) {
                        contador++;
                    }

                } catch (Exception e) {
                    System.out.println(e);
                } finally {
                    if (call != null) {
                        call.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                }
            }
            if (contador == listaNuevos.size()) {
                res = true;
            }
        }
        return res;
    }
}
